const ObjProto = Object.prototype
const toString = ObjProto.toString

/**
 * 判断是否是字符串
 * @param {*} str
 * @returns
 */
export function isString(str) {
  return typeof str === 'string'
}

/**
 * 判断是否是数字
 * @param {*} num
 * @returns
 */
export function isNumber(num) {
  return typeof num === 'number'
}

/**
 * 判断是否为 undefined
 * @param {*} u
 * @returns
 */
export function isUndefined(u) {
  return typeof u === 'undefined'
}

/**
 * 判断是否是函数
 * @param {*} fn
 * @returns
 */
export function isFunction(fn) {
  return typeof fn === 'function'
}

/**
 * 判断是否是数组
 * @param {*} arr
 * @returns
 */
export function isArray(arr) {
  return Array.isArray(arr) || toString.call(arr) === '[object Array]'
}

/**
 * 判断是否是普通对象
 * @param {*} obj
 * @returns
 */
export function isObject(obj) {
  return toString.call(obj) === '[object Object]'
}
